package org.example;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class ExcelUtils {

    /**
     * 获取单元格的值，并统一转换为字符串
     *
     * @param cell 单元格对象
     * @return 单元格的字符串值
     */
    public static String getCellValueAsString(Cell cell) {
        if (cell == null) {
            return ""; // 如果单元格为空，返回空字符串
        }

        switch (cell.getCellType()) {
            case STRING:
                return cell.getStringCellValue(); // 字符串类型
            case NUMERIC:
                return String.valueOf(cell.getNumericCellValue()); // 数值类型
            case BOOLEAN:
                return String.valueOf(cell.getBooleanCellValue()); // 布尔类型
            case FORMULA:
                return cell.getCellFormula(); // 公式类型
            default:
                return ""; // 其他类型返回空字符串
        }
    }

    public static <T extends Object> List<T> readExcelFile(String path, Class<T> clazz){
        List<T> list = new ArrayList<T>();
        String templatePath = "C:\\Users\\lvenx\\Desktop\\shixi\\untitled\\src\\main\\java\\org\\example\\期间核查导入导出模板.xlsx"; // 模板文件路径
        String exportPath = "exported_file.xlsx"; // 导出文件路径

        try (FileInputStream fis = new FileInputStream(new File(templatePath));
             XSSFWorkbook workbook = new XSSFWorkbook(fis)) {

            // 加载模板中的第一个 Sheet
            XSSFSheet sheet = workbook.getSheetAt(0);
            Field[] declaredFields = clazz.getDeclaredFields();

            T obj = null;
            int columnIndex = 0;
            Cell cell = null;
            MyAnnotation annotation = null;


//            // 修改模板中的数据（假设修改第6行，第2列到第16列的数据）
//            for (int i = 5; i < 10; i++) { // 从第6行开始
//                Row row = sheet.getRow(i);
//                if (row == null) {
//                    row = sheet.createRow(i); // 如果行不存在则创建新行
//                }
//                for (int j = 1; j <= 15; j++) { // 第2列到第16列
//                    Cell cell = row.ge00tCell(j);
//                    if (cell == null) {
//                        cell = row.createCell(j); // 如果单元格不存在则创建
//                    }
//                    cell.setCellValue("数据" + (i + 1) + "-" + (j + 1)); // 设置数据
//                }
//            }

            // 保存修改后的 Excel 文件
            try (FileOutputStream fos = new FileOutputStream(new File(exportPath))) {
                workbook.write(fos);
                System.out.println("导出成功：" + exportPath);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
